const fs = require('fs');
const path = require('path');
const babel = require("@babel/core");

const code = fs.readFileSync(path.resolve(__dirname, 'code.js'), 'utf-8');
const OUT_DIR = 'output';
// 得到 AST 对象
const ast = babel.parse(code, {
    sourceType: "module",
});
// 进行一系列操作后将ast转换回去 保持代码格式不变
// 尝试保持格式不变地转换AST回代码
const result = babel.transformFromAstSync(ast, code, {
    generatorOpts: {
        retainLines: true,
        comments: true, // 保持注释
        compact: false, // 不压缩代码
        concise: false, // 不使用简洁表示
        quotes: "auto", // 自动决定使用单引号还是双引号
    },
    sourceMaps: true,
});
const code2 = result.code;
fs.writeFileSync(path.resolve(OUT_DIR, 'sameCode.js'), code2, 'utf-8');
if (code === code2) {
    console.log('success')
} else {
    console.log('fail')
}